package dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.Query;

import modelo.Perfil;
import modelo.Usuario;

public class UsuarioDao {

	private EntityManager em;
	
	public UsuarioDao(){
		try {
			Class.forName("org.postgresql.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		EntityManagerFactory factory = Persistence.createEntityManagerFactory("banco_quero_teto");
		this.em = factory.createEntityManager();
	}
	public Usuario usuarioNoSistema(Usuario usuario){
		Query query = em.createNamedQuery("Usuario.emailSenhaValido");
		query.setParameter("email", usuario.getEmail());
		query.setParameter("senha", usuario.getSenha());
		List<Usuario> list = query.getResultList(); 
		if(list.size() > 0){
			return list.get(0);			
		}else{
			return null;
		}
	}
	
	public List<Usuario> pesquisaAvancada(Usuario usuario){
		Query query = em.createNamedQuery("Usuario.pesquisaAvancada");
		
		query.setParameter("bebe", usuario.getPerfil().getBebe());
		query.setParameter("fuma", usuario.getPerfil().getFuma());
		query.setParameter("sexo", usuario.getSexo());
		query.setParameter("cidade", usuario.getCidade());
		
		return (List<Usuario>)query.getResultList();
	}
	
	public List<String> pesquisaCidades(){
		
		Query query = em.createNamedQuery("Usuario.cidades");
		
		return query.getResultList();
	}
	
	public Usuario getUsuario(String email){
		
		return em.find(Usuario.class, email);
		
	}
	
	public static void main(String[] args) {
		UsuarioDao dao = new UsuarioDao();
		/*Usuario user = new Usuario();
		user.setEmail("sandrooliveira1501@gmail.com");
		user.setSenha("1234");
		
		Usuario u = dao.usuarioNoSistema(user);
		if(u != null){
			System.out.println(u.getNome());
		}else{
			System.out.println("Login ou senha inexistentes");
		}*/
		
		Usuario usuario = new Usuario();
		usuario.setPerfil(new Perfil());
		usuario.getPerfil().setBebe(true);
		usuario.getPerfil().setFuma(false);
		usuario.setSexo("M");
		usuario.setCidade("Jucas");
		
		for (String u : dao.pesquisaCidades()) {
			System.out.println(u);
		}
	}
	
}
